學習程式可以幫助我們解決許多重複性的工作
而在公司總有遇到許多需要備份的檔案
像是Log檔或是ETL收檔之類的
為了不被新寫的資料覆蓋掉
又或者是想依日期去存放每天的檔案
因此有項工具可以協助處理這麻煩的瑣事:batch檔
而且入門相對程式來得容易
接下來就來看看怎麼開始吧!
首先打開記事本
接著輸入
「
for /f "tokens=1-4 delims=/ " %%j in ("%date%") do set CUR-DRB=%%j-%%k-%%l
IF EXIST C:\IT_Backup%CUR-DRB% (rd /Q/S C:\IT_Backup%CUR-DRB%)
md C:\IT_Backup%CUR-DRB%
XCOPY "C:\IT" "C:\IT_Backup%CUR-DRB%" /D/K/E/Y
」
其中路徑是需要依照你設定的檔案路徑來改的
需要備份的檔案在這裡 [C:\IT]
要把檔案備份到這裡 [C:\ITBackup%CUR-DRB%]
小提示:
for /f :用來解析文本,讀取字符串
複製所用到的指令:XCOPY
以/來切割字串(就像是split):delims=/
日期變數:%date% (可以用cmd 輸入echo %date% 就可以看到像"2022/09/29 週四"這種格式的當天日期)
(所以將"2022/09/29 週四"用/來切割的話就會得到j=2022,k=09,l=29
接著設定變數CUR-DRB=%%j-%%k-%%l 也就是2022-09-29
那麼md C:\IT_Backup%CUR-DRB% 就會在C:\IT_Backup下建立2022-09-29的資料夾)
提取字串(這邊拿的字串就是剛剛用delims切好的):tokens
rd :刪除目錄
md :建立目錄
相關參數的說明
/Q:在複製時不要顯示檔名
/S:複製每個目錄及其包含的子目錄,不含空目錄
/D:只複製比目的檔還更新的檔案
/K:複製後檔案的屬性不變
/E:包含子目錄
/Y:覆蓋一個已經存在的檔案時不會跳出提示
彩色版:
接著另存新檔 副檔名需為bat
(存檔類型選擇所有檔案 然後直接在檔名的最後加上[.bat]即可)
接著便可以手動執行這個檔案
(像是雙擊執行檔[exe]的方式去雙擊你剛剛寫好的batch檔)
就可以看到檔案成功備份了!!
備份到檔名是今天日期的資料夾下
你現在也會寫簡單的程式了
很有成就感,對吧?
這就是當工程師小小的樂趣XD